<?php
namespace app\admin\controller;

use Couchbase\UserSettings;
use think\Controller;
use think\Db;
use think\Request;
use think\Session;
use think\Validate;

class Con1 extends AdminController
{
    /**
     * 加载管理员列表页面,查询数据表,遍历数据
     *
     * @return \think\response\View
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function index()
    {
        // 查询 用户数据表所有数据
        $list = Db::table('admin_user')->select();
        // 获取所有用户ID
        foreach ($list as $k) {
            $user_id[] = $k['au_id'];
        }

        //  通过用户 ID 查询 用户_角色 数据表 所有数据
        for ($i=0;$i<sizeof($user_id);$i++) {
            $listd[] = Db::table('user_role')->where('u_id',$user_id[$i])->select();
        }

        // 通过 角色 ID 查询 角色数据表 所有有关角色信息
        $role_name = array();
        for ($i=0;$i<sizeof($listd);$i++) {
            for ($j=0;$j<sizeof($listd[$i]);$j++) {
                $role_name[$listd[$i][$j]['u_id']][$listd[$i][$j]['r_id']] = Db::table('role')->field('r_rolename')->where('r_id',$listd[$i][$j]['r_id'])->find();
            }
        }

        return view('admin@con1/tables',[
            'list'=>$list,
            'role_name'=>$role_name
        ]);
    }


    /**
     * 加载添加页面
     *
     * @return \think\response\View
     */
    public function func1()
    {
      return view('admin@con1/func1');
    }

    /**
     * 管理员添加处理，存入数据表
     */
    public function doadd()
    {
        $p = input('post.');
        if (empty($p['au_name']) || empty($p['au_password']) || empty($p['au_tel']) ) {
            return $this->error('请将添加内容填写完整！');
        }
        $data = [
            'au_name' => $p['au_name'],
            'au_password' => $p['au_password'],
            'au_tel' => $p['au_tel']
        ];
        $result = Db::table('admin_user')->data($data)->insert();
        if ($result>0){
            return $this->success('添加成功！',url('admin/con1/index'));
        }else {
            return $this->error('添加失败！');
        }
    }

    /**
     * 获取角色更改页面 进行角色更改并提交
     * @return array
     */
    public function addrole($au_id){
        // 查询 用户_角色 数据表， 看本用户已有角色
        $res_user_role = Db::table('user_role')->where('u_id',$au_id)->select();

        // 定义一个初始值
        $k = 0;
        // 获取 已有角色的角色ID
        if (!empty($res_user_role)){
            for ($i=0;$i<sizeof($res_user_role);$i++) {
                $oldRoleId[] = $res_user_role[$i]['r_id'];
            }
            // 查询 角色数据表 中角色信息
            $inf_role = Db::table('role')->select();

            $k = 1;
            $oldList = array();
            for ($i = 0; $i < sizeof($oldRoleId); $i++) {
                for ($j = 0; $j < sizeof($inf_role); $j++) {
                    if (!empty($inf_role[$j]['r_id'])){
                        if ($oldRoleId[$i] == $inf_role[$j]['r_id']){
                            $oldList[] = $inf_role[$j];
                            unset($inf_role[$j]);
                        }
                    }
                }
            }

            return view('admin@con1/addRole',[
                'list_role'=>$inf_role,
                'au_id'=>$au_id,
                'oldList'=>$oldList,
                'k'=>$k
            ]);
        } else {
            // 查询 角色 数据表 中角色信息
            $inf_role = Db::table('role')->select();

            return view('admin@con1/addRole',['list_role'=>$inf_role,'au_id'=>$au_id,'k'=>$k]);
        }
    }


    /**
     * 用户角色 的更改
     *
     * @param Request $request
     * @param $au_id
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function doaddrole(Request $request,$au_id) {
        $info = $request->put();

        // 判断是否选择了角色
        if (!empty($info['role'])){
            // 删除 用户_角色 表中得 所有此ID下得数据
            Db::table('user_role')->where('u_id',$au_id)->delete();

            // 获取已选择 角色
            $data = $info['role'];
            // 获取 角色 的ID
            foreach ($data as $k ) {
                $r_id[] = $k;
            }

            // 定义一个空数组
            $user_role = '';
            for ($i=0;$i<sizeof($r_id);$i++) {
                $data = [
                    'u_id' => $au_id,
                    'r_id' => $r_id[$i]
                ];
                $result = Db::table('user_role')->data($data)->insert();
            }
            if ($result > 0) {
                return $this->success('权限修改成功!', url('admin/Con1/index'));
            } else {
                return $this->error('权限修改失败！');
            }
        } else {
            return $this->error('权限修改失败！');
        }
    }

}